package com.example.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.domain.entity.Diary;
import com.example.domain.entity.Plant;
import com.example.exception.FloraException;

//import example.Exception.PlantAdminException;

import com.example.domain.entity.Plant;

import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.security.core.parameters.P;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zrr
 * @since 2022-12-01
 */

public interface IPlantService extends IService<Plant> {

    public void updateLikeCount(Long plantId) throws FloraException;

    IPage<Plant> getPlants(Map<String, Object> condition, Integer pageNum, Integer pageSize);
    /**
     * 获得用户的植物列表
     *
     * @param userId   用户id
     * @param pageNum  页数
     * @param pageSize 页面大小
     * @return {@link IPage}<{@link Plant}>
     */
    IPage<Plant> getPlantsByUserId(long userId, Integer pageNum, Integer pageSize);

    void deletePlant(Long id);
    /**
     * 获得明星植物，即关注数多的植物
     *
//     * @param pageNum  页数、
//     * @param pageSize 页面大小
//     * @return {@link IPage}<{@link Plant}>
//     */
    List<Plant> getHotPlants();

    /**
     * 获得最新添加的植物
     *
     * @param pageNum  页数
     * @param pageSize 页面大小
     * @return {@link IPage}<{@link Plant}>
     */
    IPage<Plant> getNewPlants(Integer pageNum, Integer pageSize);

    /**
     * 添加植物
     *
     * @param plant 植物
     * @return {@link Plant}
     * @throws FloraException
     */
    Plant addPlant(Plant plant)throws FloraException;

    /**
     * 更新植物
     *
     * @param plantId 植物id
     * @param plant   植物
     * @throws  FloraException
     */
    void updatePlant(long plantId, Plant plant)throws FloraException;

    String uploadPhotoOfPlant(MultipartFile img, long plantId)throws FloraException;

    Plant getPlantById(Long plantId);
}
